// #include <stdio.h>
// #include <stdlib.h>
// #include <string.h>
// #include <assert.h>
// #include <stdbool.h>
//
// void test_char()
// {
//     char str[]="iloveyou我想你";
//     FILE* f = fopen("mm.txt","w");
//     assert(f);
//     int i=0;
//     while (str[i]!='\0')
//     {
//         fputc(str[i],f);
//         i++;
//     }
//     fclose(f);
// }
//
// /*
//  * int fputs(char* buff,FILE* _stream)
//  * int fgets(char* buff,int count,FILE* _stream)
//  */
// void test_string()
// {
//     char str[]="i love ypi  fooofasfoaf 我发发发";
//     FILE* f = fopen("kk.txt","a");
//     assert(f);
//     fputs(str,f);
//     fclose(f);
//
//     FILE* read = fopen("kk.txt","r");
//     assert(read);
//     char buffer[1024]="";
//     fgets(buffer,1024,read);
//     printf("%s\n",buffer);
//     fclose(read);
// }
//
// void test_string_read()
// {
//     //1.怎么去写结束 换行也会读取出来
//     FILE* f = fopen("kk.txt","r");
//     assert(f);
//     //读到换行符知道这一行有多少个 合理使用内存
//     char str[10][1024]={{""}};
//     int count = 0;
//     while (1)
//     {
//         fgets(str[count],1024,f);
//         int pos = strlen(str[count]); //手动去掉读出来的换行符
//         str[count][pos-1]='\0';
//         count++;
//         if (feof(f))
//         {
//             break;
//         }
//     }
//     for (int i=0;i<count;i++)
//     {
//         printf("%s\n",str[i]);
//     }
//     fclose(f);
// }
//
//
// void test_read()
// {
//     FILE* f = fopen("mm.txt","r");
//     assert(f);
//     int c;
//     int count=0;
//     char str[1024]=""; //这样都是\0 一定要养成这样的习惯
//     while ((c = fgetc(f))!=EOF)
//     {
//         str[count] =c;
//         count++;
//     }
//     str[count]='\0';
//
//     puts(str);
//     //把文件的字母小写转大写 把文件中的内容读到程序 操作程序中的变量区完成 完成后再写到文件中去
//     //完成再以w的方式写到文件中去
//
//     int i=0;
//     FILE* t = fopen("mm.txt","w");
//     while (str[i]!=0)
//     {
//         if (str[i] >= 'a' && str[i]<='z')
//         {
//             str[i]-=32;
//         }
//         fputc(str[i],t);
//         i++;
//     }
//     fclose(t);
// }
//
//
//
//
//
// int main()
// {
//     test_string_read();
//     // test_char();
//
//     // const char *str = "./test.txt";
//     //
//     // //这种事报错  不能关闭空文件  stream.valid
//     // // FILE* fp = NULL;
//     // // fclose(fp);
//     //
//     //
//     // //读写方式
//     // /**
//     //  *w： write 写的方式打开文件 具备创建文件的功能 如果文件不存在 创建文件 如果文件存在 清空文件
//     //  *r read 读的方式打开文件- 单纯读
//     //  *a append 追加的方式打开文件 在原来文件末尾接着写 也有创建文件的功能 如果文件存在 不清空
//     //  *  +: 可读可写
//     //  *  w+ a+ r+
//     //  *  b: 代表的是二进制
//     //  *  wb ab rb
//     //  * wb+ ab+ rb+
//     // */
//     //
//     // /**
//     //  * 写 fputc(int _character,FILE* _stream)
//     //  * 读 fgetc(FILE* _stream)
//     //  **/
//     //
//     // FILE* fs=fopen(".apppend.txt","a");
//     // if (fs==NULL)
//     // {
//     //     printf("打开文件失败\n");
//     // }else
//     // {
//     //     fclose(fs);
//     // }
//     //
//     // FILE* w= fopen("write.txt","w");
//     // assert(w);
//     // fclose(w);
//     //
//     // FILE* r = fopen("read.txt","r");
//     // if (r==NULL)
//     // {
//     //     printf("文件打开失败\n");
//     // }
//     // //读写文件 以字符和字符串的方式读写文件
//
//
//
//
//
//     return 0;
// }